﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Hostal.Bussines.Entities;
using Hostal.Bussines.Repository.Service;

namespace Hostal.Bussines.Repository
{
    public class HabitacionRepository : MasterRepository, IHabitacionRepository
    {

        public List<Habitacion> GetAllFromHabitacionbyTipo(int ID)
        {
            throw new NotImplementedException();
        }

        public List<Habitacion> GetAllFromHabitacion()
        {
            var query = from p in Context.Habitacion.Include("TipoHabitacione")
                        select p;

            return query.ToList();
        }

        public List<Habitacion> GetFromHabitacionbyCriterio(string criterio)
        {
            var query = from p in Context.Habitacion.Include("TipoHabitacion")
                       select p;

           if (criterio != "" & criterio != null & criterio != string.Empty)
           {
                query = from p in query
                        where p.TipoHabitacione.Descripcion.ToUpper().Contains(criterio.ToUpper()) && p.Estado == false
                        select p;
           }

            return query.ToList();
        }

        public List<Habitacion> GetFromHabitacionbyEstado(bool estado)
        {
            var query = from p in Context.Habitacion.Include("TipoHabitacion")
                        select p;

            if (estado)
            {
                query = query.Where(p => p.Estado == estado);
            }

            return query.ToList();
        }

        public Habitacion GetFromHabitacionbyId(int id)
        {
            return Context.Habitacion.Find(id);
        }

        public void AddHabitacion(Habitacion habitacion)
        {
            Context.Habitacion.Add(habitacion);
            Context.SaveChanges();
        }

        public void UpdateHabitacion(Habitacion habitacion)
        {
            Context.Entry(habitacion).State = System.Data.EntityState.Modified;
            Context.SaveChanges();
        }

        public void RemoveHabitacion(int id)
        {
            var existe = Context.Habitacion
                      .Where(p => p.IdHabitacion.Equals(id))
                      .SingleOrDefault();

            if (existe != null)
            {
                Context.Habitacion.Remove(existe);
                Context.SaveChanges();
            }
        }

        public void OcuparHabitacio(int id)
        {
            var habitacion = Context.Habitacion.Find(id);

                habitacion.Estado = true;

       Context.SaveChanges();

        }
    }
}
